package model.subject;

import commands.Command;

/**
 * Interface permettant de bloquer ou debloquer le capteur suivant l'état de la diffusion de ses valeurs.
 */
public interface Lockable {
	
	/**
	 * Déblocage du capteur. Les modifications sont autorisées.
	 */
	public void allowChanges();
	
	/** 
	 * Blocage du capteur. Les modifications ne sont plus autorisées.
	 */
	public void blockChanges();
		
	/**
	 * Modification de la commande destinée à effectuer la rétroaction sémantique sur l'IHM suite au déblocage du capteur.
	 * @param allowChangesOnApplicationPanelCommand		La commande destinée à effectuer la rétroaction sémantique sur l'IHM suite au déblocage du capteur.
	 */
	public void setAllowChangesOnApplicationPanelCommand(Command allowChangesOnApplicationPanelCommand);

	/**
	 * Modification de la commande destinée à effectuer la rétroaction sémantique sur l'IHM suite au blocage du capteur.
	 * @param blockChangesOnApplicationPanelCommand		La commande destinée à effectuer la rétroaction sémantique sur l'IHM suite au blocage du capteur.
	 */
	public void setBlockChangesOnApplicationPanelCommand(Command blockChangesOnApplicationPanelCommand);
	
}
